package br.edu.ifpi.ads.pc;

/**
 *
 * @author Ricardo Rosa Barbosa de Macedo
 */
public class RomanoDecimal {
    
    public RomanoDecimal(){
    }
    
    public int convertRomano(String algarismo){
        int auxiliar = 0,
            contNormal = 0,
            contEspecial = 0,
            cont = 0;
        Romanos anterior = null;
        
            for (int i = 0; i < algarismo.length(); i++) {
                for(Romanos atual: Romanos.values()){
                    if(algarismo.charAt(i) == atual.toString().charAt(0)){
                        if((i > 0 && anterior != null) && anterior.romano < atual.romano){
                            auxiliar = atual.romano - anterior.romano;
                            contEspecial += auxiliar;
                            cont = contNormal - anterior.romano;
                            contNormal = 0;
                            
                        }
                        else{
                            contNormal += atual.romano;
                            cont += atual.romano;
                        }
                        anterior = atual;
                    }
                }
            }
            
            return contEspecial + contNormal + (cont - contNormal);
    }
    
    
    public enum Romanos{
        I(1),V(5),X(10),L(50),C(100),D(500),M(1000);
        
        private int romano;
        Romanos(int romano){
            this.romano = romano;
        }
    }
}
